package com.chenwc.enumeration;

import com.chenwc.util.translate.baidu.enumeration.BaiDuLang;
import com.chenwc.util.translate.youdao.enumeration.YouDaoLang;

/**
 * 国际化语言_地区
 * 下划线前面为语言，ISO 639 alpha-2 或 alpha-3 语言代码，或长度不超过 8 个字符的语言子标签
 * 下划线后面为地区，ISO 3166 alpha-2 国家代码或 UN M.49 numeric-3 区域代码。
 * 这里只是指生成的 properties 文件名称，翻译成哪个语种需要修改TranslateByBaiDuUtil和在BaiDuLang增加语种枚举
 *
 * @author chenwc
 * @package com.chenwc.enumeration
 * @project wso2-sinicization
 * @date 2024/5/25
 */
public enum LocaleLanguage {
    /**
     * 汉语简体
     */
    CHINA("zh_CN", "汉语简体"),
    /**
     * 美式英语
     */
    AMERICAN("en_US", "美式英语"),

    /**
     * 中国香港繁体
     */
    HONGKONG("zh_HK", "中国香港繁体");

    private String locale;

    private String description;

    LocaleLanguage(String locale, String description) {
        this.locale = locale;
        this.description = description;
    }

    public String getLocale() {
        return locale;
    }

    /**
     * 根据国际化语言_地区转换为百度语言枚举
     *
     * @param localeLanguage 国际化语言_地区
     * @return 百度语言枚举
     */
    public static BaiDuLang changeLocaleLanguage2BaiDuLang(LocaleLanguage localeLanguage) {
        if (localeLanguage == LocaleLanguage.CHINA) {
            return BaiDuLang.ZH;
        } else if (localeLanguage == LocaleLanguage.AMERICAN) {
            return BaiDuLang.EN;
        } else if (localeLanguage == LocaleLanguage.HONGKONG) {
            return BaiDuLang.CHT;
        }
        return null;
    }

    /**
     * 根据国际化语言_地区转换为有道智云语言枚举
     *
     * @param localeLanguage 国际化语言_地区
     * @return 百度语言枚举
     */
    public static YouDaoLang changeLocaleLanguage2YouDaoLang(LocaleLanguage localeLanguage) {
        if (localeLanguage == LocaleLanguage.CHINA) {
            return YouDaoLang.CHINESE;
        } else if (localeLanguage == LocaleLanguage.AMERICAN) {
            return YouDaoLang.ENGLISH;
        } else if (localeLanguage == LocaleLanguage.HONGKONG) {
            return YouDaoLang.CHINESE_TAIWAN;
        }
        return null;
    }
}
